package cn.wit.test;

import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

//创建一个服务器，接受客户端请求
public class Srever {
	public static void main(String[] args) {

		ServerSocket server = null;

		Socket socket = null;

		InputStream inputStream = null;

		OutputStream outputStream = null;

		// 端口不能使用1024以下，会抛出异常
		try {
			// 创建一个服务
			server = new ServerSocket(6666);

			System.out.println("服务器启动了，准备接受连接。。。");

			// 接受一个客户端连接
			// 如果有客户端连接，accept会马上返回一个socket
			// 如果没有，accept会阻塞线程
			socket = server.accept();// socket代表连接上得客户端

			System.out.println("连上了一个客户端:" + socket.getInetAddress() + "端口：" + socket.getPort());

			// 开始通信
			inputStream = socket.getInputStream();// 得到一个输入流

			//兩次調用read读服务器发送过来得消息
			System.out.println(inputStream.read());
			
			System.out.println(inputStream.read());

			outputStream = socket.getOutputStream();

			outputStream.write('Z');

			System.out.println("通信结束。。。");

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 在这里关闭资源,注意关闭顺序，先关闭输入输出流
			closeQuietly(inputStream);
			closeQuietly(outputStream);
			closeQuietly(socket);
			closeQuietly(server);
		}
	}

	// 关闭，使用多态得方式
	public static void closeQuietly(Closeable c) {
		// 在这里关闭资源
		if (c != null) {
			try {
				c.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
